#pragma once

#include "ColorUtils/Color.h"
#include "MathUtils/Ray.h"

class Intersectable
{
public:
	virtual void WhereIntersects(const Ray&, FirstIntersectionResult&) = 0;
	virtual void ColorAtIntersection(SecondIntersectionResult&, const Point&, const Ray&) = 0;
	virtual Direction NormalAtPoint(FirstIntersectionResult&, const Point&) = 0;
	virtual ~Intersectable(void) = 0{};
};

typedef boost::shared_ptr<Intersectable> Intersectable_ptr;
